package ctrl

import (
	"fmt"
	"im_unitree/utils"
	"io"
	"math/rand"
	"net/http"
	"os"
	"strings"
	"time"
)

func init() {
	os.MkdirAll("./mnt", os.ModePerm)
}

func Upload(w http.ResponseWriter, r *http.Request) {
	UploadLocal(w, r)
}

// 1. 存储位置
// 2. url 保证可以访问
func UploadLocal(writer http.ResponseWriter, request *http.Request) {
	// 获得上传的源文件
	srcfile, header, err := request.FormFile("file")
	if err != nil {
		utils.RespFail(writer, err.Error())
	}

	// 创建一个新的文件
	suffix := ".png"
	// 如果前端文件名称包含后缀，以前端后缀为准
	ofilename := header.Filename
	tmp := strings.Split(ofilename, ".")
	if len(tmp) > 0 {
		suffix = "." + tmp[len(tmp)-1]
	}

	// 如果前端指定了filetype，以filetype为准
	filetype := request.FormValue("filetype")
	if len(filetype) > 0 {
		suffix = filetype
	}

	filename := fmt.Sprintf("%d%04d%s", time.Now().Unix(), rand.Int31(), suffix)

	destfile, err := os.Create("./mnt/" + filename)
	if err != nil {
		utils.RespFail(writer, err.Error())
		return
	}
	// 源文件拷贝到目标文件
	_, err = io.Copy(destfile, srcfile)
	if err != nil {
		utils.RespFail(writer, err.Error())
		return
	}
	url := "/mnt/" + filename
	utils.RespOk(writer, url, "")
}
